// m_user.js (Vuex模块)
export default {
  namespaced: true,
  state: () => ({
    address: JSON.parse(uni.getStorageSync('address') || '{}'),
    token: uni.getStorageSync('token') || '',
    userinfo: JSON.parse(uni.getStorageSync('userinfo') || '{}'),
    //重定向的object对象 {openType,from}
    redirectInfo: null
  }),
  mutations: {
    // 更新收货地址
    updateAdress(state, address) {
      state.address = address;
      this.commit('m_user/saveAddressToStorage');
    },
    // 将收货地址存储到本地
    saveAddressToStorage(state) {
      uni.setStorageSync('address', JSON.stringify(state.address)); // 保存地址到本地存储
    },
    // 更新用户信息
    updateUserInfo(state, userinfo) {
      state.userinfo = userinfo;
      this.commit('m_user/saveUserInfoToStorage');
    },
    // 将用户信息存储到本地
    saveUserInfoToStorage(state) {
      uni.setStorageSync('userinfo', JSON.stringify(state.userinfo)); // 保存用户信息到本地存储
    },
    // 更新 token
    updateToken(state, token) {
      state.token = token;
      this.commit('m_user/saveTokenToStorage');
    },
    // 将 token 存储到本地
    saveTokenToStorage(state) {
      uni.setStorageSync('token', state.token); // 保存 token 到本地存储
    },
    //更新重定向
    updateRedirectInfo(state, info) {
      state.redirectInfo = info
    },
    //点击退出登录清空本地存储里的三个数据的封装的函数
    clearAllData(state) {
      // 1. 清空 Vuex 中的数据
      state.address = {};
      state.token = '';
      state.userinfo = {};

      // 2. 清除所有本地存储的数据
      uni.clearStorageSync(); // 清除所有存储的数据
      console.log('Local storage cleared');

      // 3. 再次尝试读取，确保清空成功
      let token = uni.getStorageSync('token');
      let userinfo = uni.getStorageSync('userinfo');
      let address = uni.getStorageSync('address');

      console.log('Token:', token); // 应该是 undefined 或 null
      console.log('UserInfo:', userinfo); // 应该是 undefined 或 null
      console.log('Address:', address); // 应该是 undefined 或 null
    }



  },
  getters: {
    // 计算收货地址字符串
    addressStr(state) {
      if (!state.address.provinceName) {
        return '';
      }
      return `${state.address.provinceName}${state.address.cityName}${state.address.countyName}${state.address.detailInfo}`;
    }
  }
};